#coding=utf-8
import os

import imageio
from PIL import ImageSequence
from imageio.core import Image

class ImageUtil:
    def __init__(self, name):
        self.name = name

    # 提取gif每一帧并保存jpg格式，这里使用.convert('RGB')是因为frame.save不能保存png格式的图片，下同。
    def getFrames(self, im):
        # 非动画
        if False == im.is_animated:
            return;
        index = 1
        for frame in ImageSequence.Iterator(im):
            frame = frame.convert('RGB')
            frame.save("g%d.jpg" % index)
            self.compressImg(self, 'g%d.jpg' % index)
            index = index + 1
        return index

    # 压缩图片。
    def compressImg(self, ImgName):
        im = Image.open(ImgName)
        im.convert('RGB')
        if max(im.size[0], im.size[1]) > 128:
            im.thumbnail((128, 128))
        im.save('f-' + ImgName, quality=50)
        return 'OK'

    # 将之前拆开的jpg文件合成gif。
    def compressGif(self, ind, dur):
        images = []
        for i in range(1, ind):
            images.append(imageio.imread('f-g%d.jpg' % i))
        imageio.mimsave('c001.gif', images, duration=dur)

    # 计算帧之间的频率，获取到的是毫秒，duration是秒，所以除以1000。
    def calDuration(self, im):
        return (im.info)['duration'] / 1000

    # 移除图片。
    def removeImg(self, ind):
        for i in range(1, ind):
            af = 'f-g' + str(i) + '.jpg'
            f = 'g' + str(i) + '.jpg'
            if os.path.exists(af):
                os.remove(af)
            if os.path.exists(f):
                os.remove(f)
